/*
Date:20210404 12:00pm
key:1.链表之间仅通过指针交换位置要特别注意不要让新链表尾巴不断。中途有循环出现是可以的。
 */
class Solution {
public:
    void reorderList(ListNode* head) 
    {
        if(head==nullptr)
        {
            return ;
        }
        vector<ListNode*> V;

        ListNode* p=head;
        while(p!=nullptr)
        {
            V.push_back(p);
            p=p->next;
        }
    int i=0;
    int j=V.size()-1;
    int flag=1;
        while(i<j)
        {
            if(flag%2)
            {
                V[i]->next=V[j];
                i++;
            }
            else
            {       
                V[j]->next=V[i];
                j--;
            }
            flag++;
        }
        V[i]->next=nullptr;

    }
    
};
//i<j 循环里两行搞定，高手出神入化。
            while (left < right) {
                vec[left]->next = vec[right];
                vec[right--]->next = vec[++left];
            }
